#pragma once

#include <stdio.h>
#include <stdlib.h>

// 定义树的结构

typedef char BTDataType ;

typedef struct BinaryTreeNode
{

    BTDataType data ;

    struct BinaryTreeNode* left ;

    struct BinaryTreeNode* right ;

} BTNode ;

// 前序遍历---根左右

void preOrder (BTNode* root) ;

// 中序遍历---左根右

void inOrder (BTNode* root) ;

// 后序遍历---左右根

void postOrder (BTNode* root) ;

// 层序遍历

void leverOrder (BTNode* root) ;

// 二叉树节点个数

int BinaryTreeSize (BTNode* root) ;

// int BinaryTreeSize (BTNode* root , int* psize) ;

// 二叉树叶子节点个数

int BinaryTreeLeafSize (BTNode* root) ;

// 二叉树第k层节点个数

int BinaryTreeLevelKSize (BTNode* root , int k) ;

// 二叉树的深度/高度

int BinaryTreeDepth (BTNode* root) ;

// 二叉树查找值为x的节点

BTNode* BinaryTreeFind (BTNode* root , BTDataType x) ;

// 二叉树的销毁

void BinaryTreeDestory (BTNode** root) ;
